package com.lhs.Result;

import lombok.Data;

public enum ResultCodeEnum {
    //   通用状态码
    SUCCESS(200, "操作成功"),
    ERROR(500, "操作失败"),
    CREATED(201, "创建成功"),
    UPDATED(202, "更新成功"),
    DELETED(203, "删除成功"),

    // 客户端错误状态码 (4xx)
    BAD_REQUEST(400, "请求参数错误或语法错误"),
    UNAUTHORIZED(401, "未授权，要求身份验证"),
    FORBIDDEN(403, "服务器理解请求但拒绝执行"),
    NOT_FOUND(404, "请求的资源不存在"),
    METHOD_NOT_ALLOWED(405, "请求方法不允许用于该资源"),
    REQUEST_TIMEOUT(408, "请求超时"),
    CONFLICT(409, "请求与资源的当前状态冲突"),

    // 服务器错误状态码 (5xx)
    INTERNAL_SERVER_ERROR(500, "服务器内部错误，无法完成请求"),
    NOT_IMPLEMENTED(501, "服务器不支持实现请求所需的功能"),
    BAD_GATEWAY(502, "服务器作为网关或代理时，从上游服务器收到无效响应"),
    SERVICE_UNAVAILABLE(503, "服务不可用，可能由于过载或维护"),
    GATEWAY_TIMEOUT(504, "服务器作为网关或代理时，未能及时从上游服务器收到请求"),

    // 业务相关状态码 (建议在5xx后扩展，或使用6xx等自定义范围，避免与标准HTTP状态码冲突)
    BIZ_ERROR(510, "通用业务异常"),
    PARAM_ERROR(511, "参数错误"),
    DATA_NOT_FOUND(512, "数据不存在"),
    DATA_ALREADY_EXIST(513, "数据已存在"),
    VALIDATE_ERROR(514, "参数验证失败"),

    // 文件相关状态码
    FILE_OUT_MAX(600, "文件超出最大限制"),
    FILE_FORMAT_ERROR(601, "文件格式不正确"),
    FILE_NOT_FOUND(602, "文件不存在"),

    // 系统相关状态码
    JSON_FORMAT_ERROR(700, "Json解析异常"),
    SQL_ERROR(701, "Sql解析异常"),
    NETWORK_TIMEOUT(702, "网络超时"),
    SYS_ERROR(703, "系统异常"),
    UNKNOWN_INTERFACE(704, "未知的接口"),
    REQ_MODE_NOT_SUPPORTED(705, "请求方式不支持");

    private final int code;
    private final String msg;

    ResultCodeEnum(int code, String msg) {
        this.code = code;
        this.msg = msg;
    }

    public int getCode() {
        return code;
    }

    public String getMsg() {
        return msg;
    }
}